-- lua脚本来校验库存和实现一人一单
-- 参数1：订单id 参数2：用户id
local voucherId = ARGV[1]
local userId = ARGV[2]
local orderId = ARGV[3]
local stockKey =  "seckill:stock:" .. voucherId
local orderKey =  "seckill:order:" .. userId
--1. 判断库存是否充足
if (tonumber(redis.call('get',stockKey)) <= 0) then
    -- 库存不足
    return 1
end
--2.判断用书是否下过单
if (redis.call('sismember',orderKey,userId) == 1) then
    -- 重复下单
    return 2
end
--扣减库存
redis.call('incrby',stockKey,-1)
--将用户id存入set集合
redis.call('sadd',orderKey,userId)
-- 发送消息 xadd stream.orders *  k1 v1 k2 v2
redis.call('xadd','stream.orders', '*','voucherId',voucherId,'userId',userId,'id',orderId)
return 0